package com.example.langchain4j.config;

import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore;
import io.milvus.common.clientenum.ConsistencyLevelEnum;
import io.milvus.param.IndexType;
import io.milvus.param.MetricType;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;

//@Configuration
public class EmbeddingStoreConfig {

    @Resource
    private EmbeddingModel embeddingModel;

    @Bean
    public EmbeddingStore<TextSegment> embeddingStore() {

        // 创建 MilvusEmbeddingStore 实例
        MilvusEmbeddingStore embeddingStore = MilvusEmbeddingStore.builder()
                .host("localhost")                         // Milvus 服务器主机
                .port(19530)                               // Milvus 服务器端口
                .collectionName("chailiang_collection")      // 集合名称
                .dimension(embeddingModel.dimension())     // 向量维度
                .indexType(IndexType.FLAT)                 // 索引类型
                .metricType(MetricType.COSINE)             // 度量类型
                .consistencyLevel(ConsistencyLevelEnum.EVENTUALLY)  // 一致性级别
                .autoFlushOnInsert(true)                   // 插入后自动刷新
                .idFieldName("id")                         // ID 字段名称
                .textFieldName("text")                     // 文本字段名称
                .metadataFieldName("metadata")             // 元数据字段名称
                .vectorFieldName("vector")                 // 向量字段名称
                .build();                                  // 构建 MilvusEmbeddingStore 实例
        return embeddingStore;
    }


}
